/******************** NG.Respate(C)  **********************************
* 产品名称: Respate 科技
* 文件名称: main.c
* 程序作者: 雷帕特公司(南宫子萍)
* 程序版本: V1.1														   
* 编制日期: 2019/10/10
* 功能描述: 线性表链式结构
* QQ:		2085827949
**********************************************************************/
#ifndef __USER_H__
#define __USER_H__
#include "stdio.h"
#include "stdlib.h"
#include <string.h>
#include "LinkList.h"
#include "utils.h"

#include <sys/types.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "LapString.h"
#include "flight.h"

#define CFG_USER_NAME_SIZE		14	//最大名字长度
#define CFG_USER_PASSWD_SIZE	10	//最大密码长度
#define CFG_USER_DATA_DIR "./data/user"
#define CFG_USER_DATA "user.dat"

//只有普通用户才能操作
#define errRootUser(user,msg,ret)\
if(user->limit>=1)\
{\
    printf(msg"\r\n");\
    return ret;\
}

//只有特权用户才能操作
#define tureRootUser(user,msg,ret)\
if(user->limit<1)\
{\
    printf(msg"\r\n");\
    return ret;\
}




//航班链表节点
typedef struct user{
	char name[CFG_USER_NAME_SIZE];		//用户名
	char passwd[CFG_USER_PASSWD_SIZE];	//密码
	char number[10];					//用户编号
	int isVip;							//是否是vip
	int limit;							//用户权限
	int balance;						//余额
	char flight_num[10];				//航班号
	char date[15];						//班期

	void* flightList;					//购买航班记录
}User;


extern User * currentUser ;   //当前登录的用户
extern LinkList* userList; //用户链表

void userInit(void);
int logUser(void);
int registerUser(void);
void deleteUser_ByName(char* name);
void userSave(void);
void showeUserInfo(User* user);
int chengUser(User* user);
void RechargeVip(User* user);
void Recharge(User* user);

int decodeUser(char* src);
int decodeUserFile(char* src);
User* getUser_byName(char* name);
void addUser(User* user);
void deleteUser(User* user);
void addUser(User* user);
void showeUserInfo(User* user);
void userTest(void);

#endif
